package paginator.helpers
{
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.text.StyleSheet;
	
	import mx.utils.StringUtil;
	
	[Event(name="loadCssComplete", type="flash.events.Event")]
	/**
	 * Klasa parsujaca wybrany plik css oraz 
	 * wczytujaca jego wlasciwosci do podanego przycisku
	 * */
	public dynamic class ParserCss
	{
		/**
		 * Sciezka do pliku css
		 * */
		private var _pathCss:String;
		private var _urlRequest:URLRequest;
		private var _urlLoader:URLLoader;
		
		/**
		 * Zaladowane style css
		 * */
		private var _styleSheet:StyleSheet;
		/**
		 * Przycisk do ktorego zostaly wczytane wlasciwosci
		 * */
		private var _btn:Object;
		/**
		 * Nazwa klasy z pliku css
		 * */
		private var _className:String;
		private var _loadComplete:Boolean;
		
		public function btnObjects(btn:Object, className:String):void
		{
			_btn = btn;
			_className = className;
			loadProperties();
		}
		
		/**
		 * Konstruktor
		 * 
		 * @param String pathCss Sciezka do pliku css
		 * @param DisplayObject btn Przycisk
		 * @param String Nazwa klasy w css
		 * */
		public function ParserCss()
		{
			_loadComplete = false;
		}
		
		/**
		 * Laduje plik css
		 * */
		public function initializeCss(pathCss:String, callBackFunAfterInit:Function):void
		{
			try
			{
				_pathCss = pathCss;
				_urlRequest = new URLRequest(pathCss);
				_urlLoader = new URLLoader();
				_urlLoader.addEventListener(Event.COMPLETE, callBackFunAfterInit);
				_urlLoader.load(_urlRequest);
				_loadComplete = false;
			}
			catch (e:Error)
			{
				throw new Error("Problem z odczytem pliku css.");
			}
		}
		
		/**
		 * Wczytuje z zaladowanego pliku wszystkie
		 * Wlasciwosci
		 * */
		private function loadProperties():void
		{
			if (_btn == null)
			{
				return;
			}
			
			if (_styleSheet == null)
			{
				_styleSheet = new StyleSheet();
				_styleSheet.parseCSS(_urlLoader.data);
			}
			
			var objStyle:Object = _styleSheet.getStyle(_className);

			for (var name:String in objStyle)
			{
				var arr:Array = objStyle[name].split(",");
				for (var i:int = 0; i < arr.length; i++)
				{
					arr[i] = StringUtil.trim(arr[i].toString());
				}
				
				if (arr.length == 1)
				{
					_btn.setStyle(name, arr[0]);
				}
				else if (arr.length > 1)
				{
					_btn.setStyle(name, arr);
				}
			}
		}
	}
}